
#define   CONTROLBOUNDARY_NUM  19
#define   EXTENDBOUNDARY_NUM   144
#define   LVBOUNDARY_NUM       399


//CR data
static const UChar C_CRBoundary[]={0x000D};

//LF data
static const UChar C_LFBoundary[]={0x000A};

//control data
static const CODEAREA C_controlBoundary[]={
{0x0000,0x0009},{0x000B,0x000C},{0x000E,0x001F},{0x007F,0x009F},{0x00AD,0x00AD},{0x0600,0x0603},
{0x06DD,0x06DD},{0x070F,0x070F},{0x17B4,0x17B5},{0x200B,0x200B},{0x200E,0x200F},{0x2028,0x202E},
{0x2060,0x2063},{0x206A,0x206F},{0xFEFF,0xFEFF},{0xFFF9,0xFFFB},{0x1D173,0x1D17A},{0xE0001,0xE0001},
{0xE0020,0xE007F}
};

//extend data
static const CODEAREA C_extendBoundary[]={
{0x0300,0x036F},{0x0483,0x0486},{0x0488,0x0489},{0x0591,0x05BD},{0x05BF,0x05BF},{0x05C1,0x05C2},
{0x05C4,0x05C5},{0x05C7,0x05C7},{0x0610,0x0615},{0x064B,0x065E},{0x0670,0x0670},{0x06D6,0x06DC},
{0x06DE,0x06E4},{0x06E7,0x06E8},{0x06EA,0x06ED},{0x0711,0x0711},{0x0730,0x074A},{0x07A6,0x07B0},
{0x07EB,0x07F3},{0x0901,0x0902},{0x093C,0x093C},{0x0941,0x0948},{0x094D,0x094D},{0x0951,0x0954},
{0x0962,0x0963},{0x0981,0x0981},{0x09BC,0x09BC},{0x09BE,0x09BE},{0x09C1,0x09C4},{0x09CD,0x09CD},
{0x09D7,0x09D7},{0x09E2,0x09E3},{0x0A01,0x0A02},{0x0A3C,0x0A3C},{0x0A41,0x0A42},{0x0A47,0x0A48},
{0x0A4B,0x0A4D},{0x0A70,0x0A71},{0x0A81,0x0A82},{0x0ABC,0x0ABC},{0x0AC1,0x0AC5},{0x0AC7,0x0AC8},
{0x0ACD,0x0ACD},{0x0AE2,0x0AE3},{0x0B01,0x0B01},{0x0B3C,0x0B3C},{0x0B3E,0x0B3F},{0x0B41,0x0B43},
{0x0B4D,0x0B4D},{0x0B56,0x0B57},{0x0B82,0x0B82},{0x0BBE,0x0BBE},{0x0BC0,0x0BC0},{0x0BCD,0x0BCD},
{0x0BD7,0x0BD7},{0x0C3E,0x0C40},{0x0C46,0x0C48},{0x0C4A,0x0C4D},{0x0C55,0x0C56},{0x0CBC,0x0CBC},
{0x0CBF,0x0CBF},{0x0CC2,0x0CC2},{0x0CC6,0x0CC6},{0x0CCC,0x0CCD},{0x0CD5,0x0CD6},{0x0CE2,0x0CE3},
{0x0D3E,0x0D3E},{0x0D41,0x0D43},{0x0D4D,0x0D4D},{0x0D57,0x0D57},{0x0DCA,0x0DCA},{0x0DCF,0x0DCF},
{0x0DD2,0x0DD4},{0x0DD6,0x0DD6},{0x0DDF,0x0DDF},{0x0E31,0x0E31},{0x0E34,0x0E3A},{0x0E47,0x0E4E},
{0x0EB1,0x0EB1},{0x0EB4,0x0EB9},{0x0EBB,0x0EBC},{0x0EC8,0x0ECD},{0x0F18,0x0F19},{0x0F35,0x0F35},
{0x0F37,0x0F37},{0x0F39,0x0F39},{0x0F71,0x0F7E},{0x0F80,0x0F84},{0x0F86,0x0F87},{0x0F90,0x0F97},
{0x0F99,0x0FBC},{0x0FC6,0x0FC6},{0x102D,0x1030},{0x1032,0x1032},{0x1036,0x1037},{0x1039,0x1039},
{0x1058,0x1059},{0x135F,0x135F},{0x1712,0x1714},{0x1732,0x1734},{0x1752,0x1753},{0x1772,0x1773},
{0x17B7,0x17BD},{0x17C6,0x17C6},{0x17C9,0x17D3},{0x17DD,0x17DD},{0x180B,0x180D},{0x18A9,0x18A9},
{0x1920,0x1922},{0x1927,0x1928},{0x1932,0x1932},{0x1939,0x193B},{0x1A17,0x1A18},{0x1B00,0x1B03},
{0x1B34,0x1B34},{0x1B36,0x1B3A},{0x1B3C,0x1B3C},{0x1B42,0x1B42},{0x1B6B,0x1B73},{0x1DC0,0x1DCA},
{0x1DFE,0x1DFF},{0x200C,0x200D},{0x20D0,0x20EF},{0x302A,0x302F},{0x3099,0x309A},{0xA806,0xA806},
{0xA80B,0xA80B},{0xA825,0xA826},{0xFB1E,0xFB1E},{0xFE00,0xFE0F},{0xFE20,0xFE23},{0x10A01,0x10A03},
{0x10A05,0x10A06},{0x10A0C,0x10A0F},{0x10A38,0x10A3A},{0x10A3F,0x10A3F},{0x1D165,0x1D165},{0x1D167,0x1D169},
{0x1D16E,0x1D172},{0x1D17B,0x1D182},{0x1D185,0x1D18B},{0x1D1AA,0x1D1AD},{0x1D242,0x1D244},{0xE0100,0xE01EF}
};

//L data
static const CODEAREA  C_LBoundary[]={{0x1100,0x1159},{0x115F,0x115F}};

//V data
static const CODEAREA  C_VBoundary[]={{0x1160,0x11A2}};

//T data
static const CODEAREA  C_TBoundary[]={{0x11A8,0x11F9}};

//LV data
static const UChar C_LVBoundary[]={
0xAC00,0xAC1C,0xAC38,0xAC54,0xAC70,0xAC8C,0xACA8,0xACC4,0xACE0,0xACFC,0xAD18,0xAD34,
0xAD50,0xAD6C,0xAD88,0xADA4,0xADC0,0xADDC,0xADF8,0xAE14,0xAE30,0xAE4C,0xAE68,0xAE84,
0xAEA0,0xAEBC,0xAED8,0xAEF4,0xAF10,0xAF2C,0xAF48,0xAF64,0xAF80,0xAF9C,0xAFB8,0xAFD4,
0xAFF0,0xB00C,0xB028,0xB044,0xB060,0xB07C,0xB098,0xB0B4,0xB0D0,0xB0EC,0xB108,0xB124,
0xB140,0xB15C,0xB178,0xB194,0xB1B0,0xB1CC,0xB1E8,0xB204,0xB220,0xB23C,0xB258,0xB274,
0xB290,0xB2AC,0xB2C8,0xB2E4,0xB300,0xB31C,0xB338,0xB354,0xB370,0xB38C,0xB3A8,0xB3C4,
0xB3E0,0xB3FC,0xB418,0xB434,0xB450,0xB46C,0xB488,0xB4A4,0xB4C0,0xB4DC,0xB4F8,0xB514,
0xB530,0xB54C,0xB568,0xB584,0xB5A0,0xB5BC,0xB5D8,0xB5F4,0xB610,0xB62C,0xB648,0xB664,
0xB680,0xB69C,0xB6B8,0xB6D4,0xB6F0,0xB70C,0xB728,0xB744,0xB760,0xB77C,0xB798,0xB7B4,
0xB7D0,0xB7EC,0xB808,0xB824,0xB840,0xB85C,0xB878,0xB894,0xB8B0,0xB8CC,0xB8E8,0xB904,
0xB920,0xB93C,0xB958,0xB974,0xB990,0xB9AC,0xB9C8,0xB9E4,0xBA00,0xBA1C,0xBA38,0xBA54,
0xBA70,0xBA8C,0xBAA8,0xBAC4,0xBAE0,0xBAFC,0xBB18,0xBB34,0xBB50,0xBB6C,0xBB88,0xBBA4,
0xBBC0,0xBBDC,0xBBF8,0xBC14,0xBC30,0xBC4C,0xBC68,0xBC84,0xBCA0,0xBCBC,0xBCD8,0xBCF4,
0xBD10,0xBD2C,0xBD48,0xBD64,0xBD80,0xBD9C,0xBDB8,0xBDD4,0xBDF0,0xBE0C,0xBE28,0xBE44,
0xBE60,0xBE7C,0xBE98,0xBEB4,0xBED0,0xBEEC,0xBF08,0xBF24,0xBF40,0xBF5C,0xBF78,0xBF94,
0xBFB0,0xBFCC,0xBFE8,0xC004,0xC020,0xC03C,0xC058,0xC074,0xC090,0xC0AC,0xC0C8,0xC0E4,
0xC100,0xC11C,0xC138,0xC154,0xC170,0xC18C,0xC1A8,0xC1C4,0xC1E0,0xC1FC,0xC218,0xC234,
0xC250,0xC26C,0xC288,0xC2A4,0xC2C0,0xC2DC,0xC2F8,0xC314,0xC330,0xC34C,0xC368,0xC384,
0xC3A0,0xC3BC,0xC3D8,0xC3F4,0xC410,0xC42C,0xC448,0xC464,0xC480,0xC49C,0xC4B8,0xC4D4,
0xC4F0,0xC50C,0xC528,0xC544,0xC560,0xC57C,0xC598,0xC5B4,0xC5D0,0xC5EC,0xC608,0xC624,
0xC640,0xC65C,0xC678,0xC694,0xC6B0,0xC6CC,0xC6E8,0xC704,0xC720,0xC73C,0xC758,0xC774,
0xC790,0xC7AC,0xC7C8,0xC7E4,0xC800,0xC81C,0xC838,0xC854,0xC870,0xC88C,0xC8A8,0xC8C4,
0xC8E0,0xC8FC,0xC918,0xC934,0xC950,0xC96C,0xC988,0xC9A4,0xC9C0,0xC9DC,0xC9F8,0xCA14,
0xCA30,0xCA4C,0xCA68,0xCA84,0xCAA0,0xCABC,0xCAD8,0xCAF4,0xCB10,0xCB2C,0xCB48,0xCB64,
0xCB80,0xCB9C,0xCBB8,0xCBD4,0xCBF0,0xCC0C,0xCC28,0xCC44,0xCC60,0xCC7C,0xCC98,0xCCB4,
0xCCD0,0xCCEC,0xCD08,0xCD24,0xCD40,0xCD5C,0xCD78,0xCD94,0xCDB0,0xCDCC,0xCDE8,0xCE04,
0xCE20,0xCE3C,0xCE58,0xCE74,0xCE90,0xCEAC,0xCEC8,0xCEE4,0xCF00,0xCF1C,0xCF38,0xCF54,
0xCF70,0xCF8C,0xCFA8,0xCFC4,0xCFE0,0xCFFC,0xD018,0xD034,0xD050,0xD06C,0xD088,0xD0A4,
0xD0C0,0xD0DC,0xD0F8,0xD114,0xD130,0xD14C,0xD168,0xD184,0xD1A0,0xD1BC,0xD1D8,0xD1F4,
0xD210,0xD22C,0xD248,0xD264,0xD280,0xD29C,0xD2B8,0xD2D4,0xD2F0,0xD30C,0xD328,0xD344,
0xD360,0xD37C,0xD398,0xD3B4,0xD3D0,0xD3EC,0xD408,0xD424,0xD440,0xD45C,0xD478,0xD494,
0xD4B0,0xD4CC,0xD4E8,0xD504,0xD520,0xD53C,0xD558,0xD574,0xD590,0xD5AC,0xD5C8,0xD5E4,
0xD600,0xD61C,0xD638,0xD654,0xD670,0xD68C,0xD6A8,0xD6C4,0xD6E0,0xD6FC,0xD718,0xD734,
0xD750,0xD76C,0xD788
};

//LVT data
//if a code point is between the 0xAC01 and 0xD7A3,but it doesn't exist in the C_LVBoundary[]
//so it must in the C_LVBoundary[]
static const CODEAREA C_LVTBoundary[]={{0xAC01,0xD7A3}};

